<?php
/**
 * 附件
 * 
 * @package ews
 * @ews Enterprise WorkShop
 * @version 1.0 alpha
 * @since 2011-05-06
 * @author monkee
 */

class attachmentApp extends app
{
	public function download(){
		$aid = $this->getData('get/aid');
		$attaobj = & $this->getModel('attachment');
		$file = $attaobj->get_attachment($aid);
		if(empty($file)){
			$this->message('文件已经不存在', 'error');
		}
		$file_path = ROOT.$file['file_path'];
		if(!is_file($file_path)){
			$this->message('文件已经不存在', 'error');
		}
		$MIMETypes = array(
		    'ez'         => 'application/andrew-inset',    
		    'hqx'        => 'application/mac-binhex40',    
		    'cpt'        => 'application/mac-compactpro',    
		    'doc'        => 'application/msword',    
		    'bin'        => 'application/octet-stream',    
		    'dms'        => 'application/octet-stream',    
		    'lha'        => 'application/octet-stream',    
		    'lzh'        => 'application/octet-stream',    
		    'exe'        => 'application/octet-stream',    
		    'class'      => 'application/octet-stream',    
		    'so'         => 'application/octet-stream',    
		    'dll'        => 'application/octet-stream',    
		    'oda'        => 'application/oda',    
		    'pdf'        => 'application/pdf',    
		    'ai'         => 'application/postscrīpt',    
		    'eps'        => 'application/postscrīpt',    
		    'ps'         => 'application/postscrīpt',    
		    'smi'        => 'application/smil',    
		    'smil'       => 'application/smil',    
		    'mif'        => 'application/vnd.mif',    
		    'xls'        => 'application/vnd.ms-excel',    
		    'ppt'        => 'application/vnd.ms-powerpoint',    
		    'wbxml'      => 'application/vnd.wap.wbxml',    
		    'wmlc'       => 'application/vnd.wap.wmlc',    
		    'wmlsc'      => 'application/vnd.wap.wmlscrīptc',    
		    'bcpio'      => 'application/x-bcpio',    
		    'vcd'        => 'application/x-cdlink',    
		    'pgn'        => 'application/x-chess-pgn',    
		    'cpio'       => 'application/x-cpio',    
		    'csh'        => 'application/x-csh',    
		    'dcr'        => 'application/x-director',    
		    'dir'        => 'application/x-director',    
		    'dxr'        => 'application/x-director',    
		    'dvi'        => 'application/x-dvi',    
		    'spl'        => 'application/x-futuresplash',    
		    'gtar'       => 'application/x-gtar',    
		    'hdf'        => 'application/x-hdf',    
		    'js'         => 'application/x-javascrīpt',    
		    'skp'        => 'application/x-koan',    
		    'skd'        => 'application/x-koan',    
		    'skt'        => 'application/x-koan',    
		    'skm'        => 'application/x-koan',    
		    'latex'      => 'application/x-latex',    
		    'nc'         => 'application/x-netcdf',    
		    'cdf'        => 'application/x-netcdf',    
		    'sh'         => 'application/x-sh',    
		    'shar'       => 'application/x-shar',    
		    'swf'        => 'application/x-shockwave-flash',    
		    'sit'        => 'application/x-stuffit',    
		    'sv4cpio'    => 'application/x-sv4cpio',    
		    'sv4crc'     => 'application/x-sv4crc',    
		    'tar'        => 'application/x-tar',    
		    'tcl'        => 'application/x-tcl',    
		    'tex'        => 'application/x-tex',    
		    'texinfo'    => 'application/x-texinfo',    
		    'texi'       => 'application/x-texinfo',    
		    't'          => 'application/x-troff',    
		    'tr'         => 'application/x-troff',    
		    'roff'       => 'application/x-troff',    
		    'man'        => 'application/x-troff-man',    
		    'me'         => 'application/x-troff-me',    
		    'ms'         => 'application/x-troff-ms',    
		    'ustar'      => 'application/x-ustar',    
		    'src'        => 'application/x-wais-source',    
		    'xhtml'      => 'application/xhtml+xml',    
		    'xht'        => 'application/xhtml+xml',    
		    'zip'        => 'application/zip',    
		    'au'         => 'audio/basic',    
		    'snd'        => 'audio/basic',    
		    'mid'        => 'audio/midi',    
		    'midi'       => 'audio/midi',    
		    'kar'        => 'audio/midi',    
		    'mpga'       => 'audio/mpeg',    
		    'mp2'        => 'audio/mpeg',    
		    'mp3'        => 'audio/mpeg',    
		    'aif'        => 'audio/x-aiff',    
		    'aiff'       => 'audio/x-aiff',    
		    'aifc'       => 'audio/x-aiff',    
		    'm3u'        => 'audio/x-mpegurl',    
		    'ram'        => 'audio/x-pn-realaudio',    
		    'rm'         => 'audio/x-pn-realaudio',    
		    'rpm'        => 'audio/x-pn-realaudio-plugin',    
		    'ra'         => 'audio/x-realaudio',    
		    'wav'        => 'audio/x-wav',    
		    'pdb'        => 'chemical/x-pdb',    
		    'xyz'        => 'chemical/x-xyz',    
		    'bmp'        => 'image/bmp',    
		    'gif'        => 'image/gif',    
		    'ief'        => 'image/ief',    
		    'jpeg'       => 'image/jpeg',    
		    'jpg'        => 'image/jpeg',    
		    'jpe'        => 'image/jpeg',    
		    'png'        => 'image/png',    
		    'tiff'       => 'image/tiff',    
		    'tif'        => 'image/tiff',    
		    'djvu'       => 'image/vnd.djvu',    
		    'djv'        => 'image/vnd.djvu',    
		    'wbmp'       => 'image/vnd.wap.wbmp',    
		    'ras'        => 'image/x-cmu-raster',    
		    'pnm'        => 'image/x-portable-anymap',    
		    'pbm'        => 'image/x-portable-bitmap',    
		    'pgm'        => 'image/x-portable-graymap',    
		    'ppm'        => 'image/x-portable-pixmap',    
		    'rgb'        => 'image/x-rgb',    
		    'xbm'        => 'image/x-xbitmap',    
		    'xpm'        => 'image/x-xpixmap',    
		    'xwd'        => 'image/x-xwindowdump',    
		    'igs'        => 'model/iges',    
		    'iges'       => 'model/iges',    
		    'msh'        => 'model/mesh',    
		    'mesh'       => 'model/mesh',    
		    'silo'       => 'model/mesh',    
		    'wrl'        => 'model/vrml',    
		    'vrml'       => 'model/vrml',    
		    'css'        => 'text/css',    
		    'html'       => 'text/html',    
		    'htm'        => 'text/html',    
		    'asc'        => 'text/plain',    
		    'txt'        => 'text/plain',    
		    'rtx'        => 'text/richtext',    
		    'rtf'        => 'text/rtf',    
		    'sgml'       => 'text/sgml',    
		    'sgm'        => 'text/sgml',    
		    'tsv'        => 'text/tab-separated-values',    
		    'wml'        => 'text/vnd.wap.wml',    
		    'wmls'       => 'text/vnd.wap.wmlscrīpt',    
		    'etx'        => 'text/x-setext',    
		    'xsl'        => 'text/xml',    
		    'xml'        => 'text/xml',    
		    'mpeg'       => 'video/mpeg',    
		    'mpg'        => 'video/mpeg',    
		    'mpe'        => 'video/mpeg',    
		    'qt'         => 'video/quicktime',    
		    'mov'        => 'video/quicktime',    
		    'mxu'        => 'video/vnd.mpegurl',    
		    'avi'        => 'video/x-msvideo',    
		    'movie'      => 'video/x-sgi-movie',    
		    'ice'        => 'x-conference/x-cooltalk',    
		);
    	$file_ext = substr($file['file_type'],1);
    	$file_type = $MIMETypes[$file_ext] ? $MIMETypes[$file_ext] : 'application/octet-stream';

        //header('Cache-control: max-age=31536000'); 
        //header('Expires: ' . gmdate('D, d M Y H:i:s', time()+31536000) . ' GMT');
        //header('Last-Modified: ' . gmdate('D, d M Y H:i:s' , filemtime($file_path) . ' GMT'));
        header('Content-Encoding: none');
        header('Content-type: ' . $fileType);
        header('Content-Disposition: attachment; filename=' . $file['file_name']);
        header('Content-Length: ' . filesize($file_path));
        $fp = fopen($file_path, 'rb');
        //$content = ob_get_clean();
        //if(!empty($content)){
        	//echo strlen($content);
        	//exit($content);
        //}
        //exit('3');
        ob_end_clean();
        fpassthru($fp);
        fclose($fp);
        exit;
	}
}
?>